<!DOCTYPE html>
<html lang="en">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>GCC 3.0 New Features</title>
<link rel="stylesheet" type="text/css" href="https://gcc.gnu.org/gcc.css" />
</head>

<body>
<h1>GCC 3.0 New Features</h1>

<h2>Additional changes in GCC 3.0.4</h2>

  <ul>
    <li>GCC 3.0 now supports newer versions of the <a
        href="http://www.netbsd.org/">NetBSD</a> operating system,
        which use the ELF object file format, on x86 processors.</li>
    <li>Correct debugging information is generated from functions
        that have lines from multiple files (e.g. yacc output).</li>
    <li>A fix for whitespace handling in the <code>-traditional</code>
        preprocessor, which can affect Fortran.</li>
    <li>Fixes to the exception handling runtime.</li>
    <li>More fixes for bad code generation in C++.</li>
    <li>A fix for shared library generation under AIX 4.3.</li>
    <li>Documentation updates.</li>
    <li>Port of GCC to Tensilica's Xtensa processor contributed.</li>
    <li>A fix for compiling the PPC Linux kernel (FAT fs wouldn't link).</li>
  </ul>

<h2>Additional changes in GCC 3.0.3</h2>

  <ul> 
    <li>A fix to correct an accidental change to the PowerPC ABI.</li>
    <li>Fixes for bad code generation on a variety of architectures.</li>
    <li>Improvements to the debugging information generated for C++ 
        classes.</li>
    <li>Fixes for bad code generation in C++.</li>
    <li>A fix to avoid crashes in the C++ demangler.</li>
    <li>A fix to the C++ standard library to avoid buffer overflows.</li>
    <li>Miscellaneous improvements for a variety of architectures.</li>
  </ul>

<h2>Additional changes in GCC 3.0.2</h2>

  <ul>
    <li>Fixes for bad code generation during loop unrolling.</li>
    <li>Fixes for bad code generation by the sibling call optimization.</li>
    <li>Minor improvements to x86 code generation.</li>
    <li>Implementation of function descriptors in C++ vtables for IA64.</li>
    <li>Numerous minor bug-fixes.</li>
  </ul>

<h2>Additional changes in GCC 3.0.1</h2>

  <ul>
    <li>C++ fixes for incorrect code-generation.</li>
    <li>Improved cross-compiling support for the C++ standard library.</li>
    <li>Fixes for some embedded targets that worked in GCC 2.95.3, but
        not in GCC 3.0.</li>
    <li>Fixes for various exception-handling bugs.</li>
    <li>A port to the S/390 architecture.</li>
  </ul>

<h2>General Optimizer Improvements</h2>

  <ul>
    <li><a href="../news/reorder.html">Basic block reordering
        pass</a>.</li>
    <li>New if-conversion pass with support for conditional
        (predicated) execution.</li>
    <li>New tail call and sibling call elimination optimizations.</li>
    <li>New register renaming pass.</li>
    <li>New (experimental) <a href="../news/ssa.html">static single
        assignment</a> (SSA) representation support.</li>
    <li>New dead-code elimination pass implemented using the
        SSA representation.</li>
    <li><a href="../news/null.html">Global null pointer test
        elimination</a>.</li>
    <li><a href="../news/unify.html">Global code
        hoisting/unification</a>.</li>
    <li>More builtins and optimizations for stdio.h, string.h and old
        BSD functions, as well as for ISO C99 functions.</li> 
    <li>New builtin __builtin_expect for giving hints to the branch
        predictor.</li> 
  </ul>

<h2>New Languages and Language specific improvements</h2>

  <ul>
    <li>The GNU Compiler for the Java(TM) language (GCJ)
        is now integrated and supported, including the run-time library
        containing most common non-GUI Java classes, a bytecode interpreter,
        and the Boehm conservative garbage collector.
        Many bugs have been fixed.
        GCJ can compile Java source or Java bytecodes to either native code
        or Java class files, and supports native methods written in either
        the standard JNI or the more efficient and convenient CNI.</li>
    <li>Here is a <a href="c++features.html">partial list of C++
        improvements</a>, both new features and those no longer
        supported.</li>

    <li>New C++ ABI. On the IA-64 platform GCC is capable of
        inter-operating with other IA-64 compilers.</li> 
    <li>The new ABI also significantly reduces the size of symbol and debug
        information.</li>
    <li>New C++ support library
        and many C++ bug fixes, vastly improving our conformance to the
        ISO C++ standard.</li>
    <li>New <a href="../news/inlining.html">inliner for C++</a>.</li>
    <li>Rewritten C preprocessor, integrated into the C, C++ and
        Objective C compilers, with very many improvements including
        ISO C99 support and <a
        href="../news/dependencies.html">improvements to dependency
        generation</a>.</li>
    <li>Support for more <a href="../c99status.html">ISO C99 features</a>.</li>
    <li>Many improvements to support for checking calls to format
        functions such as <code>printf</code> and <code>scanf</code>,
        including support for ISO C99 format features, extensions from
        the Single Unix Specification and GNU libc 2.2, checking of
        <code>strfmon</code> formats and features to assist in
        auditing for format string security bugs.</li>
    <li>New warnings for C code that may have undefined semantics
        because of violations of sequence point rules in the C
        standard (such as <code>a = a++;</code>, <code>a[n] =
        b[n++];</code> and <code>a[i++] = i;</code>), included in
        <code>-Wall</code>.</li>
    <li>Additional warning option <code>-Wfloat-equal</code>.</li>
    <li>Improvements to <code>-Wtraditional</code>.</li>
    <li>Fortran improvements are listed in
        <a href="https://gcc.gnu.org/onlinedocs/gcc-3.4.6/g77/News.html">the
        Fortran documentation</a>.</li>
  </ul>

<h2>New Targets and Target Specific Improvements</h2>

  <ul>
    <li>New x86 back end, generating much improved code.</li>
    <li>Support for a generic i386-elf target contributed.</li>
    <li>New option to emit x86 assembly code using Intel style syntax
        (<code>-mintel-syntax</code>).</li>
    <li>HPUX 11 support contributed.</li>
    <li>Improved PowerPC code generation, including scheduled
        prologue and epilogue.</li>
    <li>Port of GCC to Intel's IA-64 processor contributed.</li>
    <li>Port of GCC to Motorola's MCore 210 and 340 contributed.</li>
    <li>New unified back-end for Arm, Thumb and StrongArm contributed.</li>
    <li>Port of GCC to Intel's XScale processor contributed.</li>
    <li>Port of GCC to Atmel's AVR microcontrollers contributed.</li>
    <li>Port of GCC to Mitsubishi's D30V processor contributed.</li>
    <li>Port of GCC to Matsushita's AM33 processor (a member
        of the MN10300 processor family) contributed.</li>
    <li>Port of GCC to Fujitsu's FR30 processor contributed.</li>
    <li>Port of GCC to Motorola's 68HC11 and 68HC12 processors
        contributed.</li>
    <li>Port of GCC to Sun's picoJava processor core contributed.</li>
  </ul>

<h2>Documentation improvements</h2>

  <ul>
    <li>Substantially rewritten and improved C preprocessor
        manual.</li>
    <li>Many improvements to other documentation.</li>
    <li>Manpages for <code>gcc</code>, <code>cpp</code> and
        <code>gcov</code> are now generated automatically from the
        master Texinfo manual, eliminating the problem of manpages
        being out of date.  (The generated manpages are only extracts
        from the full manual, which is provided in Texinfo form, from
        which info, HTML, other formats and a printed manual can be
        generated.)</li>
    <!-- This needs to be implemented in the release script.  -->
    <li>Generated info files are included in the release tarballs
        alongside their Texinfo sources, avoiding problems on some
        platforms with building <code>makeinfo</code> as part of the
        GCC distribution.</li>
  </ul>

<h2>Other significant improvements</h2>

  <ul>
    <li>Garbage collection used internally by the compiler for most memory
        allocation instead of obstacks.</li>
    <li>Lengauer and Tarjan algorithm used for computing dominators in
        the CFG.  This algorithm can be significantly faster and more
        space efficient than our older algorithm.</li>
    <li><code>gccbug</code> script provided to assist in submitting
        bug reports to our bug tracking system.  (Bug reports previously
        submitted directly to our mailing lists, for which you received
        no bug tracking number, should be submitted again using
        <code>gccbug</code> if you can reproduce the problem with GCC 3.0.)
        </li>
    <li>The internal <code>libgcc</code> library is <a
        href="libgcc.html">built as a shared library</a> on systems
        that support it.</li>
    <li>Extensive testsuite included with GCC, with many new
        tests.  In addition to tests for GCC bugs that have been
        fixed, many tests have been added for language features,
        compiler warnings and builtin functions.</li>
    <li>Additional language-independent warning options
        <code>-Wpacked</code>, <code>-Wpadded</code>,
        <code>-Wunreachable-code</code> and
        <code>-Wdisabled-optimization</code>.</li>
    <li>Target-independent options <code>-falign-functions</code>,
        <code>-falign-loops</code> and <code>-falign-jumps</code>.</li>
  </ul>

  <p>Plus a great many bug fixes and almost all the <a
  href="../gcc-2.95/features.html">features found in GCC 2.95</a>.</p>

</body>
</html>
